#include <STC15F2K60S2.H>
unsigned char key_an;
unsigned char key_date;
unsigned char hang;
unsigned char key_board(void)
 {
	 switch(key_an)
	 {
		   case 0:
		      { 
			      P3 = 0x0f;
					  P42 = 0; 
					  P44 = 0;
			      if(P3!=0x0f)                
				    key_an =1;
		       }break;
		 
		 case 1:
		 { 
			  P3 = 0x0f; P42 = 0; P44 = 0;
		 if(P3!=0x0f)
			    {
				 if(P30==0) hang=1;
				 if(P31==0) hang=2;
				 if(P32==0) hang=3;
				 if(P33==0) hang=4;
				 switch(hang)
				      {
					      case 1:
					       {
						 			 P3 = 0xf0; P42 = 1; P44 = 1;
					         if(P44==0){key_date=0;key_an=2;}
					         if(P42==0){key_date=1;key_an=2;} 
					         if(P35==0){key_date=2;key_an=2;}
					         if(P34==0){key_date=3;key_an=2;} 
				         }break;
					       case 2:
					       {
							     P3 = 0xf0; P42 = 1; P44 = 1;
					         if(P44==0){key_date=5;key_an=2;}
					         if(P42==0){key_date=6;key_an=2;} 
					         if(P35==0){key_date=7;key_an=2;}
					         if(P34==0){key_date=8;key_an=2;} 
				         }break;
						     case 3:
					       { 
							     P3 = 0xf0; P42 = 1; P44 = 1;
					         if(P44==0){key_date=9;key_an=2;}
					         if(P42==0){key_date=10;key_an=2;} 
					         if(P35==0){key_date=11;key_an=2;}
					         if(P34==0){key_date=12;key_an=2;} 
				          }break;
						     case 4:
					        {
							     P3 = 0xf0; P42 = 1; P44 = 1;
					         if(P44==0){key_date=13;key_an=2;}
					         if(P42==0){key_date=14;key_an=2;} 
					         if(P35==0){key_date=15;key_an=2;}
					         if(P34==0){key_date=16;key_an=2;} 
				          }break;
				    } 
			  }
				   else
				       {
		 			      key_an =0;
				       }
			 
		 }
				case 2:
		      {
				P3 = 0x0f; 
				P42 = 0; 
				P44 = 0;
       if(P3 == 0x0f) //????
         key_an=0;
			  }break;
		 	 
	 }
	 return key_date;
 }
 
 